{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 16:35:19",
  "duplicates" : [ {
    "blockSize" : 18,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 52,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 52,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 18,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShiftLeftCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 46,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShiftRightCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 46,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 29,
      "endLine" : 46,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 52,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 44,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 37,
      "endLine" : 54,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 87,
      "endLine" : 104,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 87,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 87,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/ForLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 62,
      "endLine" : 79,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/ForLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 109,
      "endLine" : 126,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1536,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1237,
      "startLine" : 889,
      "endLine" : 903,
      "cleanedStartLine" : 513,
      "cleanedEndLine" : 527
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1536,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1237,
      "startLine" : 935,
      "endLine" : 949,
      "cleanedStartLine" : 552,
      "cleanedEndLine" : 566
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimKeyGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 192,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 101,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimKeyGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 192,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 128,
      "endLine" : 144,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/resources/inspectionDescriptions/UsePlug.html",
        "extension" : "html",
        "linesOfCode" : 19,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 9,
      "endLine" : 27,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "src/main/resources/inspectionDescriptions/UsePlugSyntax.html",
        "extension" : "html",
        "linesOfCode" : 19,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 9,
      "endLine" : 27,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 49,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 49,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 49,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 49,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 49,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 49,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 27,
      "endLine" : 43,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 27,
      "endLine" : 43,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/ForLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 109,
      "endLine" : 123,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 77
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/WhileLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 31,
      "endLine" : 45,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/ForLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 41,
      "endLine" : 55,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/WhileLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 31,
      "endLine" : 45,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 27,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 27,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/ForLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 62,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/WhileLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 31,
      "endLine" : 45,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/ForLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 41,
      "endLine" : 55,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/ForLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 109,
      "endLine" : 123,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 77
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/ForLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 41,
      "endLine" : 55,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/ForLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 62,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 48,
      "endLine" : 62,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 37,
      "endLine" : 51,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 51,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 75,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 50,
      "endLine" : 64,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 50,
      "endLine" : 64,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1536,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1237,
      "startLine" : 905,
      "endLine" : 921,
      "cleanedStartLine" : 529,
      "cleanedEndLine" : 540
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1536,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1237,
      "startLine" : 951,
      "endLine" : 967,
      "cleanedStartLine" : 568,
      "cleanedEndLine" : 579
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 72,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 64,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 29,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/ui/widgets/mode/Util.kt",
        "extension" : "kt",
        "linesOfCode" : 142,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 83,
      "endLine" : 98,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/ui/widgets/mode/Util.kt",
        "extension" : "kt",
        "linesOfCode" : 142,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 146,
      "endLine" : 161,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 109
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 27,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 27,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/MapClearCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 30,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/UnMapCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 30,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 49,
      "endLine" : 63,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 63,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 49,
      "endLine" : 63,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 49,
      "endLine" : 63,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 238,
      "endLine" : 248,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 151
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 284,
      "endLine" : 294,
      "cleanedStartLine" : 176,
      "cleanedEndLine" : 186
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 238,
      "endLine" : 248,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 151
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 354,
      "endLine" : 364,
      "cleanedStartLine" : 227,
      "cleanedEndLine" : 237
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 367,
      "endLine" : 377,
      "cleanedStartLine" : 240,
      "cleanedEndLine" : 250
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 380,
      "endLine" : 390,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 262
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 28,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 47,
      "endLine" : 58,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 284,
      "endLine" : 294,
      "cleanedStartLine" : 176,
      "cleanedEndLine" : 186
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 354,
      "endLine" : 364,
      "cleanedStartLine" : 227,
      "cleanedEndLine" : 237
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 212,
      "endLine" : 222,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 130
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 238,
      "endLine" : 248,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 151
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 212,
      "endLine" : 222,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 130
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 284,
      "endLine" : 294,
      "cleanedStartLine" : 176,
      "cleanedEndLine" : 186
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 212,
      "endLine" : 222,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 130
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 354,
      "endLine" : 364,
      "cleanedStartLine" : 227,
      "cleanedEndLine" : 237
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 29,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 63,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 51,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 51,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 51,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 51,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 55,
      "endLine" : 65,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 51,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 51,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 29,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 63,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 33,
      "endLine" : 44,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 33,
      "endLine" : 44,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 525,
      "endLine" : 538,
      "cleanedStartLine" : 281,
      "cleanedEndLine" : 290
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 569,
      "endLine" : 581,
      "cleanedStartLine" : 310,
      "cleanedEndLine" : 319
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 63,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 63,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 51,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 51,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/MotionGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 249,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 176,
      "startLine" : 183,
      "endLine" : 195,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 108
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimMotionGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 362,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 280,
      "startLine" : 339,
      "endLine" : 351,
      "cleanedStartLine" : 195,
      "cleanedEndLine" : 204
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugDisable.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugEnable.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 9,
      "endLine" : 33,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 9,
      "endLine" : 35,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 63,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 63,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 63,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 45,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 45,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MaxFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 63,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 37,
      "endLine" : 48,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 37,
      "endLine" : 48,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts-ts/src/youtrack-cli/add-tag.ts",
        "extension" : "ts",
        "linesOfCode" : 19,
        "components" : [ "primary::scripts-ts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 10,
      "endLine" : 18,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "scripts-ts/src/youtrack-cli/remove-tag.ts",
        "extension" : "ts",
        "linesOfCode" : 19,
        "components" : [ "primary::scripts-ts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 10,
      "endLine" : 18,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 29,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/AnonymousFunctionDeclaration.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/FunctionDeclaration.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 38,
      "endLine" : 48,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 49,
      "endLine" : 59,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 57,
      "endLine" : 67,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 39,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 71,
      "endLine" : 80,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 111,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 131,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 87
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 111,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 151,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 226,
      "endLine" : 234,
      "cleanedStartLine" : 105,
      "cleanedEndLine" : 113
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 236,
      "endLine" : 244,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 123
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 25,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 45,
      "endLine" : 55,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 44,
      "endLine" : 54,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 111,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 131,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 87
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 151,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 91,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 35,
      "endLine" : 44,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EditFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FindFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 131,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 151,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 35,
      "endLine" : 44,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 27,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 49,
      "endLine" : 60,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/group/StringUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 45,
      "endLine" : 55,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/group/StringUtil.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 74,
      "endLine" : 84,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 31,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 31,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/KeysFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 22,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/ValuesFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 22,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 151,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 111,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 131,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 87
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 44,
      "endLine" : 54,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 91,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/replacewithregister/ReplaceWithRegister.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 23,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/replacewithregister/ReplaceWithRegisterNewApi.kt",
        "extension" : "kt",
        "linesOfCode" : 132,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 95,
      "startLine" : 25,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 74,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 106,
      "endLine" : 116,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 48,
      "endLine" : 59,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 63,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 45,
      "endLine" : 55,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 151,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 91,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 111,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 131,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 87
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/JoinLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 62,
      "endLine" : 70,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 47,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 25,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 103,
      "endLine" : 113,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 139,
      "endLine" : 148,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 35,
      "endLine" : 44,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 91,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 111,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 35,
      "endLine" : 44,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 91,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 131,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 87
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 91,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 151,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 46,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/VisualBlockAppendAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/VisualInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 44,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 46,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 28,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 29,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 160,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 1460,
      "endLine" : 1468,
      "cleanedStartLine" : 846,
      "cleanedEndLine" : 854
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 1476,
      "endLine" : 1484,
      "cleanedStartLine" : 858,
      "cleanedEndLine" : 866
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 142,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimStringParserBase.kt",
        "extension" : "kt",
        "linesOfCode" : 581,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 481,
      "startLine" : 400,
      "endLine" : 409,
      "cleanedStartLine" : 296,
      "cleanedEndLine" : 304
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimStringParserBase.kt",
        "extension" : "kt",
        "linesOfCode" : 581,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 481,
      "startLine" : 419,
      "endLine" : 429,
      "cleanedStartLine" : 310,
      "cleanedEndLine" : 318
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 38,
      "endLine" : 48,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 72,
      "endLine" : 81,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 38,
      "endLine" : 46,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 397,
      "endLine" : 405,
      "cleanedStartLine" : 261,
      "cleanedEndLine" : 269
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 424,
      "endLine" : 432,
      "cleanedStartLine" : 284,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 88,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 106,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 62,
      "endLine" : 70,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteMarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 34,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FindFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 134,
      "endLine" : 142,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NoHLSearchCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShellCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 152,
      "endLine" : 160,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 98,
      "endLine" : 106,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 116,
      "endLine" : 124,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 80,
      "endLine" : 88,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CharacterMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 19,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/PredicateMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EditFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetHandlerCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EditFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 49,
      "endLine" : 59,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/VisualInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/PredicateMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/VisualAreaMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelCmdCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PackaddCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugDisable.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/UnMapCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteMarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 34,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/HistoryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetHandlerCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 73,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PackaddCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SourceCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PackaddCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugDisable.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteMarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 34,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 49,
      "endLine" : 59,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EditFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/HistoryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteNextFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 29,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 29,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 182,
      "endLine" : 189,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 246,
      "endLine" : 253,
      "cleanedStartLine" : 134,
      "cleanedEndLine" : 141
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 182,
      "endLine" : 189,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 234,
      "endLine" : 241,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 131
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EpsilonMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 19,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/VisualAreaMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 182,
      "endLine" : 189,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 222,
      "endLine" : 229,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 121
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 182,
      "endLine" : 189,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 210,
      "endLine" : 217,
      "cleanedStartLine" : 104,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 49,
      "endLine" : 59,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/IndexedExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/SublistExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 45,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 21,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 21,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelCmdCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EditFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/IdeaPlug.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 69,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteNextFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShiftLeftCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 91,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 105,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CharacterMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 19,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EpsilonMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 19,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 40,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/OptionExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 52,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 40,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/RegisterExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 39,
      "endLine" : 47,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 123,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReverseFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/AbsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 170,
      "endLine" : 177,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 246,
      "endLine" : 253,
      "cleanedStartLine" : 134,
      "cleanedEndLine" : 141
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 170,
      "endLine" : 177,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 234,
      "endLine" : 241,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 131
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/IdeaPlug.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/UnMapCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CharacterMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 19,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CollectionMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 123,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 170,
      "endLine" : 177,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 222,
      "endLine" : 229,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 121
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 170,
      "endLine" : 177,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 210,
      "endLine" : 217,
      "cleanedStartLine" : 104,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CharacterMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 19,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/PredicateMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NoHLSearchCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SmileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 87,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 69,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/VisualInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 369,
      "endLine" : 376,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 244
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 425,
      "endLine" : 432,
      "cleanedStartLine" : 285,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugEnable.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SourceCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/PredicateMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/PredicateMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 63,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 63,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/AsciiCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShellCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 40,
      "endLine" : 48,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CollectionMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/PredicateMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EpsilonMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 19,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/PredicateMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 159,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 95
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 141,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/IdeaPlug.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugEnable.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 349,
      "endLine" : 356,
      "cleanedStartLine" : 219,
      "cleanedEndLine" : 226
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 364,
      "endLine" : 371,
      "cleanedStartLine" : 232,
      "cleanedEndLine" : 239
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 114,
      "endLine" : 123,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/CmdClearCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SmileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugEnable.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 105,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PackaddCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/UnMapCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CursorMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EpsilonMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 19,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 43,
      "endLine" : 51,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 99,
      "endLine" : 107,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 23,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 39,
      "endLine" : 47,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteNextFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugDisable.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 133,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 100,
      "startLine" : 59,
      "endLine" : 67,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/MapCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 40,
      "endLine" : 48,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 114,
      "endLine" : 123,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 47,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/CmdClearCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShellCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShiftRightCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugEnable.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/UnMapCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelCmdCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/IdeaPlug.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/VisualBlockAppendAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 22,
      "endLine" : 30,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FindFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/PredicateMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/VisualAreaMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 96,
      "endLine" : 105,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 87,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/VimShortcutKeyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 292,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 201,
      "startLine" : 287,
      "endLine" : 294,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 148
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/VimShortcutKeyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 292,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 201,
      "startLine" : 296,
      "endLine" : 303,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 157
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 39,
      "endLine" : 47,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetHandlerCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CollectionMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/PredicateMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/CopyTextCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MoveTextCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 155,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 109,
      "endLine" : 116,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 945,
      "startLine" : 618,
      "endLine" : 625,
      "cleanedStartLine" : 338,
      "cleanedEndLine" : 345
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 945,
      "startLine" : 917,
      "endLine" : 924,
      "cleanedStartLine" : 590,
      "cleanedEndLine" : 597
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 60,
      "endLine" : 69,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 191,
      "endLine" : 199,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/AsciiCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SmileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/UnMapCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelCmdCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/UnMapCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetHandlerCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 80,
      "endLine" : 88,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 116,
      "endLine" : 124,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 98,
      "endLine" : 106,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 62,
      "endLine" : 70,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 62,
      "endLine" : 70,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 40,
      "endLine" : 48,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 98,
      "endLine" : 106,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 80,
      "endLine" : 88,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 152,
      "endLine" : 160,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 116,
      "endLine" : 124,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 134,
      "endLine" : 142,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CursorMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/VisualAreaMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CollectionMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EpsilonMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 19,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 38,
      "endLine" : 47,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/CmdClearCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NoHLSearchCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteMarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 34,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/TryStatement.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 94,
      "endLine" : 103,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/TryStatement.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 108,
      "endLine" : 117,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 38,
      "endLine" : 47,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 170,
      "endLine" : 177,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 182,
      "endLine" : 189,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/CmdClearCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/MapClearCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 49,
      "endLine" : 59,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EditFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteMarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 34,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetHandlerCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 56,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 191,
      "endLine" : 199,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteMarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 34,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/AsciiCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/MapClearCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/HistoryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 49,
      "endLine" : 59,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FindFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/Float2NrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EpsilonMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 19,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/PredicateMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FindFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/HistoryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugDisable.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SourceCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/HistoryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PackaddCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugEnable.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FindFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetHandlerCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 91,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/IdeaPlug.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PackaddCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 39,
      "endLine" : 47,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/IdeaPlug.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugDisable.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShellCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/MapClearCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 91,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteMarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 34,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 91,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 37,
      "endLine" : 46,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 39,
      "endLine" : 48,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SmileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/MapClearCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 73,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MapFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 198,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 61,
      "endLine" : 68,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MapFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 198,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 101,
      "endLine" : 108,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 63
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/AsciiCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/CmdClearCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionShiftDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 32,
      "endLine" : 44,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionShiftUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 32,
      "endLine" : 44,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 210,
      "endLine" : 217,
      "cleanedStartLine" : 104,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 222,
      "endLine" : 229,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 121
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 210,
      "endLine" : 217,
      "cleanedStartLine" : 104,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 246,
      "endLine" : 253,
      "cleanedStartLine" : 134,
      "cleanedEndLine" : 141
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 210,
      "endLine" : 217,
      "cleanedStartLine" : 104,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 234,
      "endLine" : 241,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 131
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GlobalCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 181,
      "endLine" : 188,
      "cleanedStartLine" : 121,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GlobalCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 213,
      "endLine" : 220,
      "cleanedStartLine" : 145,
      "cleanedEndLine" : 152
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 40,
      "endLine" : 48,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 40,
      "endLine" : 48,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 51,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteNextFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 40,
      "endLine" : 48,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CursorMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/PredicateMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/AsciiCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NoHLSearchCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 97,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 78,
      "endLine" : 87,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/IndexedExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/VariableExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 31,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 60,
      "endLine" : 69,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CharacterMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 19,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CursorMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PackaddCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 62,
      "endLine" : 70,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 80,
      "endLine" : 88,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 98,
      "endLine" : 106,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 116,
      "endLine" : 124,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 369,
      "endLine" : 376,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 244
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 398,
      "endLine" : 405,
      "cleanedStartLine" : 262,
      "cleanedEndLine" : 269
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FindFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 49,
      "endLine" : 59,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelCmdCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugDisable.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShellCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SmileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 22,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/JoinLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShiftLeftCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 150,
      "endLine" : 159,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 95
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/HistoryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EditFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 62,
      "endLine" : 71,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 53,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelCmdCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugEnable.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MapFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 198,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 47,
      "endLine" : 54,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MapFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 198,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 87,
      "endLine" : 94,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 130,
      "endLine" : 137,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RedoCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/UndoCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/IdeaPlug.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SourceCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CharacterMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 19,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/VisualAreaMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NoHLSearchCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/MapClearCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/group/visual/VimSelection.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 103,
      "startLine" : 119,
      "endLine" : 126,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/group/visual/VimSelection.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 103,
      "startLine" : 133,
      "endLine" : 140,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SourceCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/UnMapCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 78,
      "endLine" : 87,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelCmdCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SourceCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/SublistExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 45,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/VariableExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 31,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CursorMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/PredicateMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 222,
      "endLine" : 229,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 246,
      "endLine" : 253,
      "cleanedStartLine" : 134,
      "cleanedEndLine" : 141
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 132,
      "endLine" : 141,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 222,
      "endLine" : 229,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 234,
      "endLine" : 241,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 131
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 383,
      "endLine" : 390,
      "cleanedStartLine" : 249,
      "cleanedEndLine" : 256
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 411,
      "endLine" : 418,
      "cleanedStartLine" : 273,
      "cleanedEndLine" : 280
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/VisualBlockAppendAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts-ts/src/selectTicketForAnalysis.ts",
        "extension" : "ts",
        "linesOfCode" : 165,
        "components" : [ "primary::scripts-ts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 16,
      "endLine" : 26,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "scripts-ts/src/updateAuthors.ts",
        "extension" : "ts",
        "linesOfCode" : 230,
        "components" : [ "primary::scripts-ts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 193,
      "startLine" : 230,
      "endLine" : 240,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 171
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabOnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 40,
      "endLine" : 48,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 38,
      "endLine" : 47,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 38,
      "endLine" : 47,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 45,
      "endLine" : 54,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 234,
      "endLine" : 241,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 131
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 246,
      "endLine" : 253,
      "cleanedStartLine" : 134,
      "cleanedEndLine" : 141
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/JoinLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShiftRightCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 96,
      "endLine" : 105,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/AutoIndentLinesVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/HistoryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteMarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 34,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EditFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 40,
      "endLine" : 48,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 42,
      "endLine" : 51,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FindFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 27,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 78,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 91,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 33,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 49,
      "endLine" : 59,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetHandlerCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PlugCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SourceCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 38,
      "endLine" : 45,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/TryStatement.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 80,
      "endLine" : 89,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/TryStatement.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 108,
      "endLine" : 117,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CollectionMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CursorMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/TryStatement.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 80,
      "endLine" : 89,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/TryStatement.kt",
        "extension" : "kt",
        "linesOfCode" : 115,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 94,
      "endLine" : 103,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 40,
      "endLine" : 48,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 73,
      "endLine" : 81,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 46,
      "endLine" : 54,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/HistoryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetHandlerCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CollectionMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/VisualAreaMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 61,
      "endLine" : 70,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 53,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/IndexedExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/OptionExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 52,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ExtendFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReduceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 221,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 248,
      "endLine" : 254,
      "cleanedStartLine" : 166,
      "cleanedEndLine" : 172
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 1944,
      "endLine" : 1950,
      "cleanedStartLine" : 1172,
      "cleanedEndLine" : 1178
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 82,
      "endLine" : 88,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 100,
      "endLine" : 106,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutVisualTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/services/VimVariableServiceBase.kt",
        "extension" : "kt",
        "linesOfCode" : 383,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 283,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/services/VimVariableServiceBase.kt",
        "extension" : "kt",
        "linesOfCode" : 383,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 283,
      "startLine" : 87,
      "endLine" : 93,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 51,
      "endLine" : 59,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 59,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteAllCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/vimscript/services/IjVariableService.kt",
        "extension" : "kt",
        "linesOfCode" : 95,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/services/VimVariableServiceBase.kt",
        "extension" : "kt",
        "linesOfCode" : 383,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 283,
      "startLine" : 101,
      "endLine" : 107,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 118,
      "endLine" : 124,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/RegisterExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 41,
      "endLine" : 47,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/VariableExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabMoveCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 118,
      "endLine" : 124,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/VisualInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 100,
      "endLine" : 106,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/TabCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WritePreviousFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1536,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1237,
      "startLine" : 981,
      "endLine" : 987,
      "cleanedStartLine" : 591,
      "cleanedEndLine" : 597
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1536,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1237,
      "startLine" : 1062,
      "endLine" : 1068,
      "cleanedStartLine" : 648,
      "cleanedEndLine" : 654
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 247,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 181,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 139,
      "endLine" : 146,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectLastFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 103,
      "endLine" : 110,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 203,
      "endLine" : 210,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 171,
      "endLine" : 178,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 267,
      "endLine" : 274,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 235,
      "endLine" : 242,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PutLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/EscapeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/TrimFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/VisualBlockAppendAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GlobalCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 40,
      "endLine" : 47,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SubstituteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 80,
      "endLine" : 87,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 80,
      "endLine" : 87,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 40,
      "endLine" : 46,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 80,
      "endLine" : 87,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/TextObjectActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 84,
      "endLine" : 90,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 40,
      "endLine" : 46,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 39,
      "endLine" : 46,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 80,
      "endLine" : 87,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 80,
      "endLine" : 87,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 80,
      "endLine" : 87,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimStringParserBase.kt",
        "extension" : "kt",
        "linesOfCode" : 581,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 481,
      "startLine" : 391,
      "endLine" : 398,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 295
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimStringParserBase.kt",
        "extension" : "kt",
        "linesOfCode" : 581,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 481,
      "startLine" : 433,
      "endLine" : 440,
      "cleanedStartLine" : 322,
      "cleanedEndLine" : 328
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 134,
      "endLine" : 141,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/VisualBlockAppendAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelfunctionCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 118,
      "endLine" : 124,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeFirstNonBlankAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/DeepCopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/SliceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/VisualInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutVisualTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/WriteQuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 118,
      "endLine" : 124,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 100,
      "endLine" : 106,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 82,
      "endLine" : 88,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/IndexedExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/RegisterExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 41,
      "endLine" : 47,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 154,
      "endLine" : 160,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 82,
      "endLine" : 88,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 152,
      "endLine" : 159,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 95
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 136,
      "endLine" : 142,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetHandlerCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SplitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastGlobalSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 85,
      "endLine" : 91,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 128,
      "endLine" : 134,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 39,
      "endLine" : 46,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 154,
      "endLine" : 160,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 152,
      "endLine" : 159,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 95
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 152,
      "endLine" : 159,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 95
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 152,
      "endLine" : 159,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 95
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutVisualTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 380,
      "endLine" : 386,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 394,
      "endLine" : 400,
      "cleanedStartLine" : 258,
      "cleanedEndLine" : 264
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/parser/visitors/ExecutableVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 109,
      "endLine" : 115,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/parser/visitors/ExecutableVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 176,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 127,
      "endLine" : 133,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 82
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/OnlyCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 139,
      "endLine" : 146,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 171,
      "endLine" : 178,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 139,
      "endLine" : 146,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 235,
      "endLine" : 242,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 139,
      "endLine" : 146,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 203,
      "endLine" : 210,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 139,
      "endLine" : 146,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 267,
      "endLine" : 274,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1536,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1237,
      "startLine" : 1043,
      "endLine" : 1050,
      "cleanedStartLine" : 636,
      "cleanedEndLine" : 642
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1536,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1237,
      "startLine" : 1178,
      "endLine" : 1185,
      "cleanedStartLine" : 726,
      "cleanedEndLine" : 732
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 154,
      "endLine" : 160,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SelectFirstFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/OptionGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 771,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 564,
      "startLine" : 833,
      "endLine" : 844,
      "cleanedStartLine" : 352,
      "cleanedEndLine" : 358
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/OptionGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 771,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 564,
      "startLine" : 887,
      "endLine" : 898,
      "cleanedStartLine" : 381,
      "cleanedEndLine" : 387
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/QuitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/testFixtures/kotlin/org/jetbrains/plugins/ideavim/VimTestCase.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 681,
      "startLine" : 881,
      "endLine" : 887,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 497
    }, {
      "file" : {
        "relativePath" : "src/testFixtures/kotlin/org/jetbrains/plugins/ideavim/VimTestCase.kt",
        "extension" : "kt",
        "linesOfCode" : 938,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 681,
      "startLine" : 902,
      "endLine" : 908,
      "cleanedStartLine" : 510,
      "cleanedEndLine" : 516
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 116,
      "endLine" : 123,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 116,
      "endLine" : 123,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 116,
      "endLine" : 123,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 65,
      "endLine" : 73,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 54,
      "endLine" : 62,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelfunctionCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EditFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteMarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 36,
      "endLine" : 43,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelfunctionCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 116,
      "endLine" : 123,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 118,
      "endLine" : 124,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 100,
      "endLine" : 106,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 100,
      "endLine" : 106,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 82,
      "endLine" : 88,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 154,
      "endLine" : 160,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 136,
      "endLine" : 142,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/VisualBlockAppendAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutVisualTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 100,
      "endLine" : 106,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 118,
      "endLine" : 124,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 82,
      "endLine" : 88,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 82,
      "endLine" : 88,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CursorMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/VisualAreaMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 46,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/GetFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 116,
      "endLine" : 123,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 116,
      "endLine" : 123,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 116,
      "endLine" : 123,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/Float2NrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 189,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 85,
      "endLine" : 91,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 110,
      "endLine" : 116,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SplitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 80,
      "endLine" : 87,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1536,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1237,
      "startLine" : 341,
      "endLine" : 347,
      "cleanedStartLine" : 213,
      "cleanedEndLine" : 219
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1536,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1237,
      "startLine" : 362,
      "endLine" : 368,
      "cleanedStartLine" : 228,
      "cleanedEndLine" : 234
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/DeepCopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 189,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts/src/main/kotlin/scripts/youtrack.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 141,
      "startLine" : 68,
      "endLine" : 75,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "scripts/src/main/kotlin/scripts/youtrack.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 141,
      "startLine" : 196,
      "endLine" : 202,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 63,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/EmptyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 60,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/copy/PutGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 127,
      "startLine" : 202,
      "endLine" : 208,
      "cleanedStartLine" : 100,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 201,
      "endLine" : 207,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 117
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutVisualTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/CallCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GlobalCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 40,
      "endLine" : 47,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 131,
      "endLine" : 137,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 51,
      "endLine" : 59,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SplitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/EmptyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/vimscript/model/commands/ActionListCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/vimscript/model/commands/BufferCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 31,
      "endLine" : 39,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelfunctionCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FindFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 85,
      "endLine" : 91,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 136,
      "endLine" : 142,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelfunctionCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 39,
      "endLine" : 45,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 98,
      "endLine" : 105,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/sneak/IdeaVimSneakExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 277,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 204,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/sneak/IdeaVimSneakExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 277,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 204,
      "startLine" : 153,
      "endLine" : 159,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 98,
      "endLine" : 105,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 98,
      "endLine" : 105,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 98,
      "endLine" : 105,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteMarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 36,
      "endLine" : 43,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SplitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 99,
      "endLine" : 105,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 138,
      "endLine" : 144,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RegistersCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelfunctionCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetHandlerCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/copy/PutGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 127,
      "startLine" : 80,
      "endLine" : 86,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPut.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 52,
      "endLine" : 58,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/OptionExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 52,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/SublistExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 39,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 41,
      "endLine" : 47,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 128,
      "endLine" : 134,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/TextObjectActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 84,
      "endLine" : 90,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 39,
      "endLine" : 46,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimDigraphGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1616,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1568,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimDigraphGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1616,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1568,
      "startLine" : 68,
      "endLine" : 74,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 39,
      "endLine" : 45,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 116,
      "endLine" : 123,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutVisualTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 62,
      "endLine" : 68,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelfunctionCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 51,
      "endLine" : 59,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 136,
      "endLine" : 142,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 55,
      "endLine" : 63,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 59,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastGlobalSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 354,
      "endLine" : 360,
      "cleanedStartLine" : 224,
      "cleanedEndLine" : 230
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 384,
      "endLine" : 390,
      "cleanedStartLine" : 250,
      "cleanedEndLine" : 256
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 354,
      "endLine" : 360,
      "cleanedStartLine" : 224,
      "cleanedEndLine" : 230
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 412,
      "endLine" : 418,
      "cleanedStartLine" : 274,
      "cleanedEndLine" : 280
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 103,
      "endLine" : 110,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 235,
      "endLine" : 242,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 103,
      "endLine" : 110,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 267,
      "endLine" : 274,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 103,
      "endLine" : 110,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 171,
      "endLine" : 178,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 103,
      "endLine" : 110,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 203,
      "endLine" : 210,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SplitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 41,
      "endLine" : 47,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 128,
      "endLine" : 134,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/TextObjectActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 84,
      "endLine" : 90,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 110,
      "endLine" : 116,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1536,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1237,
      "startLine" : 923,
      "endLine" : 929,
      "cleanedStartLine" : 542,
      "cleanedEndLine" : 548
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelperBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1536,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1237,
      "startLine" : 969,
      "endLine" : 975,
      "cleanedStartLine" : 581,
      "cleanedEndLine" : 587
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 118,
      "endLine" : 124,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 82,
      "endLine" : 88,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 100,
      "endLine" : 106,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 71,
      "endLine" : 78,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 267,
      "endLine" : 274,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 71,
      "endLine" : 78,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 235,
      "endLine" : 242,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 71,
      "endLine" : 78,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 203,
      "endLine" : 210,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/Float2NrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 57,
      "endLine" : 63,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 63,
      "endLine" : 69,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 71,
      "endLine" : 78,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 171,
      "endLine" : 178,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 71,
      "endLine" : 78,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 139,
      "endLine" : 146,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 71,
      "endLine" : 78,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 103,
      "endLine" : 110,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/ScrollGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 241,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 180,
      "startLine" : 52,
      "endLine" : 58,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/ScrollGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 241,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 180,
      "startLine" : 73,
      "endLine" : 79,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 203,
      "endLine" : 210,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 235,
      "endLine" : 242,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 203,
      "endLine" : 210,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 267,
      "endLine" : 274,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelfunctionCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PreviousTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeFirstNonBlankAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/CallCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SubstituteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 41,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnPreviousTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 41,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 171,
      "endLine" : 178,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 235,
      "endLine" : 242,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 171,
      "endLine" : 178,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 267,
      "endLine" : 274,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 62,
      "endLine" : 69,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 171,
      "endLine" : 178,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 203,
      "endLine" : 210,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 39,
      "endLine" : 46,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 40,
      "endLine" : 46,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/SliceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/OptionExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 52,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/VariableExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/options/Option.kt",
        "extension" : "kt",
        "linesOfCode" : 232,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 195,
      "startLine" : 126,
      "endLine" : 138,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/options/Option.kt",
        "extension" : "kt",
        "linesOfCode" : 232,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 195,
      "startLine" : 194,
      "endLine" : 206,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeFirstNonBlankAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 118,
      "endLine" : 124,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 128,
      "endLine" : 134,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 110,
      "endLine" : 116,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 85,
      "endLine" : 91,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/TextObjectActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 84,
      "endLine" : 90,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MapFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 198,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MapFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 198,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 223,
      "endLine" : 229,
      "cleanedStartLine" : 134,
      "cleanedEndLine" : 140
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/EmptyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 80,
      "endLine" : 87,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/HistoryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SplitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 199,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionBlockTagAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 82,
      "endLine" : 88,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 182,
      "endLine" : 188,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 945,
      "startLine" : 577,
      "endLine" : 583,
      "cleanedStartLine" : 308,
      "cleanedEndLine" : 314
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/MarkMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/DotMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 235,
      "endLine" : 242,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "api/src/main/kotlin/com/intellij/vim/api/scopes/mappingPluginExtensions.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::api" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 267,
      "endLine" : 274,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 39,
      "endLine" : 45,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/BackreferenceMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SplitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MapFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 198,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 88,
      "endLine" : 94,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MapFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 198,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 223,
      "endLine" : 229,
      "cleanedStartLine" : 134,
      "cleanedEndLine" : 140
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 98,
      "endLine" : 105,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 299,
      "endLine" : 305,
      "cleanedStartLine" : 177,
      "cleanedEndLine" : 183
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/parser/visitors/PatternVisitor.kt",
        "extension" : "kt",
        "linesOfCode" : 636,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 512,
      "startLine" : 313,
      "endLine" : 319,
      "cleanedStartLine" : 189,
      "cleanedEndLine" : 195
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 98,
      "endLine" : 105,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 98,
      "endLine" : 105,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/GnNextTextObject.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/VisualInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankVisualLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/PrintLineNumberCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionQuoteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 94,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 98,
      "endLine" : 105,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 65,
      "endLine" : 73,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 43,
      "endLine" : 51,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelfunctionCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/HistoryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FindFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SplitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/VisualSelectSearch.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/VisualSelectSearch.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 46,
      "endLine" : 53,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/EmptyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/Float2NrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 50,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 134,
      "endLine" : 141,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/DefinedFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/varFunctions/CallFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 134,
      "endLine" : 141,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 83,
      "endLine" : 90,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 134,
      "endLine" : 141,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/AddFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 23,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/SortUniqFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelfunctionCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 32,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SplitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EditFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SplitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/ColumnMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 16,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 142,
      "endLine" : 149,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionAngleAction.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 97,
      "startLine" : 100,
      "endLine" : 106,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 66,
      "endLine" : 72,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 67,
      "endLine" : 73,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/RegisterExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 41,
      "endLine" : 47,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/SublistExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 39,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 41,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 37,
      "endLine" : 44,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfLineMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 111,
      "endLine" : 117,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/StartOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 19,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 78,
      "endLine" : 85,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 82,
      "endLine" : 89,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 42,
      "endLine" : 49,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 56,
      "endLine" : 62,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 78,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 60,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 46,
      "endLine" : 52,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 43,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 38,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfFileMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/EndOfWordMatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 55,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 34,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 122,
      "endLine" : 129,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 37,
      "endLine" : 43,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 47,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/DeepCopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/AbsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastGlobalSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeFirstNonBlankAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/TextObjectActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 85,
      "endLine" : 90,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/SelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModalInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/SelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/EmptyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/HasKeyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 92,
      "endLine" : 97,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/highlightedyank/VimHighlightedYank.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 147,
      "startLine" : 220,
      "endLine" : 225,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 101
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/highlightedyank/VimHighlightedYank.kt",
        "extension" : "kt",
        "linesOfCode" : 212,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 147,
      "startLine" : 242,
      "endLine" : 247,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 118
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ForEachFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 76,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReduceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 70,
      "endLine" : 75,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastGlobalSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 132,
      "endLine" : 137,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 51,
      "endLine" : 56,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CharArgumentConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts-ts/src/youtrack-cli/add-comment.ts",
        "extension" : "ts",
        "linesOfCode" : 38,
        "components" : [ "primary::scripts-ts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 11,
      "endLine" : 19,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "scripts-ts/src/youtrack-cli/set-status.ts",
        "extension" : "ts",
        "linesOfCode" : 31,
        "components" : [ "primary::scripts-ts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 11,
      "endLine" : 19,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexOfFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Char2nrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GlobalCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 206,
      "endLine" : 211,
      "cleanedStartLine" : 138,
      "cleanedEndLine" : 143
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GlobalCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 215,
      "endLine" : 220,
      "cleanedStartLine" : 147,
      "cleanedEndLine" : 152
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 221,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 143,
      "endLine" : 148,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 91
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 943,
      "endLine" : 948,
      "cleanedStartLine" : 505,
      "cleanedEndLine" : 510
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/TextObjectActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 85,
      "endLine" : 90,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPut.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 34,
      "endLine" : 40,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPut.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 198,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/InsertFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Char2nrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts-ts/src/youtrack-cli/add-comment.ts",
        "extension" : "ts",
        "linesOfCode" : 38,
        "components" : [ "primary::scripts-ts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 11,
      "endLine" : 19,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "scripts-ts/src/youtrack-cli/get-ticket.ts",
        "extension" : "ts",
        "linesOfCode" : 50,
        "components" : [ "primary::scripts-ts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 11,
      "endLine" : 19,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 803,
      "endLine" : 808,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 419
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 1008,
      "endLine" : 1013,
      "cleanedStartLine" : 546,
      "cleanedEndLine" : 551
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/CountFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 39,
      "endLine" : 46,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 39,
      "endLine" : 46,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/CopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Char2nrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 70,
      "endLine" : 75,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 64,
      "endLine" : 69,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/DeepCopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ErrTeapotFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/CopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 73,
      "endLine" : 78,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/variables/KeyVariable.kt",
        "extension" : "kt",
        "linesOfCode" : 17,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/variables/ValueVariable.kt",
        "extension" : "kt",
        "linesOfCode" : 17,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MaxFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Char2nrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/AbsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 86,
      "endLine" : 91,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ExternalActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/CopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/SliceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 945,
      "startLine" : 759,
      "endLine" : 765,
      "cleanedStartLine" : 464,
      "cleanedEndLine" : 469
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 945,
      "startLine" : 947,
      "endLine" : 953,
      "cleanedStartLine" : 614,
      "cleanedEndLine" : 619
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/commandLineFunctions/GetCmdTypeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/JoinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 55,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/Float2NrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexOfFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/SelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/IndexedExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 91,
      "endLine" : 96,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/VariableExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CharArgumentConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModalInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/HasKeyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DeleteCommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Char2nrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/IndexedExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 91,
      "endLine" : 96,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/OptionExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 52,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 132,
      "endLine" : 137,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/TextObjectActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 85,
      "endLine" : 90,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Nr2charFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/TrimFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 96,
      "endLine" : 101,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 141,
      "endLine" : 146,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/KeysFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/SortUniqFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/IndexedExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 91,
      "endLine" : 96,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/SublistExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 682,
      "endLine" : 687,
      "cleanedStartLine" : 340,
      "cleanedEndLine" : 345
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 803,
      "endLine" : 808,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/CountFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 111,
      "endLine" : 116,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ItemsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/ValuesFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 85,
      "endLine" : 90,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 147,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ExternalActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/EmptyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 64,
      "endLine" : 69,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 70,
      "endLine" : 75,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/DeepCopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/textFunctions/GetLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/CountFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/HasKeyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 71,
      "endLine" : 76,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/TextObjectActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 85,
      "endLine" : 90,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SortCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 112,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/MapCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 682,
      "endLine" : 687,
      "cleanedStartLine" : 340,
      "cleanedEndLine" : 345
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 1008,
      "endLine" : 1013,
      "cleanedStartLine" : 546,
      "cleanedEndLine" : 551
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/CountFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/Float2NrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/DeepCopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ExtendFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MaxFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/OptionGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 771,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 564,
      "startLine" : 610,
      "endLine" : 616,
      "cleanedStartLine" : 220,
      "cleanedEndLine" : 225
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/OptionGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 771,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 564,
      "startLine" : 745,
      "endLine" : 751,
      "cleanedStartLine" : 305,
      "cleanedEndLine" : 310
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexOfFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/ValuesFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/FlattenFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MoveTextCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 155,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/YankLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/vimscript/model/commands/BufferListCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 119,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/BufferCloseCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MapFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 198,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 120,
      "endLine" : 125,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/varFunctions/CallFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 51,
      "endLine" : 56,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexOfFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexOfFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastGlobalSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ItemsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/AddFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/variables/RegisterVariable.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/variables/ValueVariable.kt",
        "extension" : "kt",
        "linesOfCode" : 17,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Char2nrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/EscapeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Nr2charFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReduceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/CopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ForEachFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 76,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 76,
      "endLine" : 81,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexOfFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 70,
      "endLine" : 75,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 111,
      "endLine" : 116,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 55,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 55,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/FlattenFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/SortUniqFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/CopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ErrTeapotFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Nr2charFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/SubmatchFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ExternalActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 111,
      "endLine" : 116,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/JoinLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RepeatCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastGlobalSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimKeyGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimKeyGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 192,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 211,
      "endLine" : 216,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 129
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Char2nrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/EmptyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexOfFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GoToLineCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShiftRightCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 147,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 55,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 131,
      "endLine" : 136,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReduceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ErrTeapotFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ForEachFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 76,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/AbsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/GetFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReduceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 51,
      "endLine" : 56,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/SelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/SliceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/InsertFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 71,
      "endLine" : 76,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 76,
      "endLine" : 81,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ForEachFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 76,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/GetFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/JoinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/StringFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/CountFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DeleteCommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/SelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/SelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GoToLineCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RepeatCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 86,
      "endLine" : 91,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 198,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 85,
      "endLine" : 90,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 198,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/KeysFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/FlattenFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 198,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/EmptyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 51,
      "endLine" : 56,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 64,
      "endLine" : 69,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexOfFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DelfunctionCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EchoCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EchoCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 29,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ItemsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/RangeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DeleteCommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CharArgumentConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/group/SearchGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 421,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 336,
      "startLine" : 266,
      "endLine" : 271,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 123
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/group/SearchGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 421,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 336,
      "startLine" : 327,
      "endLine" : 332,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 169
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 221,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 117,
      "endLine" : 122,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 861,
      "endLine" : 866,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 167,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 163,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchHelper.kt",
        "extension" : "kt",
        "linesOfCode" : 167,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 163,
      "startLine" : 111,
      "endLine" : 116,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CharArgumentConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/SliceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 51,
      "endLine" : 56,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/FunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 152,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 164,
      "endLine" : 169,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 91
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/services/VimVariableServiceBase.kt",
        "extension" : "kt",
        "linesOfCode" : 383,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 283,
      "startLine" : 292,
      "endLine" : 297,
      "cleanedStartLine" : 179,
      "cleanedEndLine" : 184
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DeleteCommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeFirstNonBlankAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MaxFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexOfFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CharArgumentConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 75,
      "endLine" : 80,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/EditorActionHandlerBase.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 78,
      "endLine" : 83,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 63,
      "endLine" : 68,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MaxFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/EmptyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReduceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/SliceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ExtendFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ErrTeapotFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeFirstNonBlankAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualLinesEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/EmptyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Char2nrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReverseFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/textFunctions/GetLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 71,
      "endLine" : 76,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 76,
      "endLine" : 81,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EchoCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EditFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ExtendFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/GetFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CharArgumentConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/ValuesFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/RangeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/NotificationService.kt",
        "extension" : "kt",
        "linesOfCode" : 387,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 288,
      "startLine" : 70,
      "endLine" : 77,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/NotificationService.kt",
        "extension" : "kt",
        "linesOfCode" : 387,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 288,
      "startLine" : 95,
      "endLine" : 102,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 71,
      "endLine" : 76,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 133,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 100,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SortCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 112,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MaxFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Char2nrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReverseFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ErrTeapotFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 76,
      "endLine" : 81,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CharArgumentConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Nr2charFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/StringFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/DeepCopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ForEachFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 76,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/EscapeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/SubmatchFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/HasKeyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/VimMarkServiceImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 252,
      "endLine" : 258,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 136
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/VimMarkServiceImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 234,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 265,
      "endLine" : 271,
      "cleanedStartLine" : 141,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EchoCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SetHandlerCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Char2nrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CharArgumentConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 73,
      "endLine" : 78,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastGlobalSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EchoCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NextTabCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastGlobalSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DeleteCommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/SubmatchFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/TrimFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DeleteCommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 76,
      "endLine" : 81,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ExtendFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/InsertFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ExtendFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReverseFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CharArgumentConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ExternalActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/DeepCopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReduceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 73,
      "endLine" : 78,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReduceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModalInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 68,
      "endLine" : 73,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DeleteCommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 85,
      "endLine" : 90,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ExternalActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/GetFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReverseFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/ui/VimEmulationConfigurable.kt",
        "extension" : "kt",
        "linesOfCode" : 346,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 236,
      "startLine" : 326,
      "endLine" : 335,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 180
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/ui/VimEmulationConfigurable.kt",
        "extension" : "kt",
        "linesOfCode" : 346,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 236,
      "startLine" : 391,
      "endLine" : 400,
      "cleanedStartLine" : 222,
      "cleanedEndLine" : 227
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/SliceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ErrTeapotFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DeleteCommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GoToLineCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GotoCharacterCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GoToLineCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/JoinLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GlobalCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GlobalCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 206,
      "endLine" : 211,
      "cleanedStartLine" : 138,
      "cleanedEndLine" : 143
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/FuncrefCallExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/NamedFunctionCallExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 55,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 76,
      "endLine" : 81,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/JoinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/TrimFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 68,
      "endLine" : 73,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/OptionGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 771,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 564,
      "startLine" : 312,
      "endLine" : 325,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 99
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/OptionGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 771,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 564,
      "startLine" : 356,
      "endLine" : 369,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 120
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CharArgumentConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/group/copy/PutGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 127,
      "startLine" : 149,
      "endLine" : 154,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/put/VimPutBase.kt",
        "extension" : "kt",
        "linesOfCode" : 527,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 425,
      "startLine" : 523,
      "endLine" : 528,
      "cleanedStartLine" : 360,
      "cleanedEndLine" : 365
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/CopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/textFunctions/GetLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/LenFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ExistsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/commandLineFunctions/GetCmdTypeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Nr2charFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/AbsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/InsertFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExecuteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GlobalCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 215,
      "endLine" : 220,
      "cleanedStartLine" : 147,
      "cleanedEndLine" : 152
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExecuteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GlobalCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 206,
      "endLine" : 211,
      "cleanedStartLine" : 138,
      "cleanedEndLine" : 143
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ExecuteCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GlobalCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 193,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 128
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 57,
      "endLine" : 63,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 65,
      "endLine" : 71,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 73,
      "endLine" : 78,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EchoCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LockVarCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ExternalActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeletePreviousWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ExternalActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 132,
      "endLine" : 137,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/commandLineFunctions/GetCmdTypeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/TrimFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ExistsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts-ts/src/youtrack-cli/get-ticket.ts",
        "extension" : "ts",
        "linesOfCode" : 50,
        "components" : [ "primary::scripts-ts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 11,
      "endLine" : 19,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "scripts-ts/src/youtrack-cli/set-status.ts",
        "extension" : "ts",
        "linesOfCode" : 31,
        "components" : [ "primary::scripts-ts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 11,
      "endLine" : 19,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts/src/main/kotlin/scripts/youtrack.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 141,
      "startLine" : 84,
      "endLine" : 91,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "scripts/src/main/kotlin/scripts/youtrack.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 141,
      "startLine" : 211,
      "endLine" : 218,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 129
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/variables/HighLightVariable.kt",
        "extension" : "kt",
        "linesOfCode" : 17,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/variables/RegisterVariable.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/DeepCopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/GetFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/LetCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 133,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 100,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/YankLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 92,
      "endLine" : 97,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EchoCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FindFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/DeepCopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReverseFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/MoveTextCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 155,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/mapping/MapCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 195,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionMiddleColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastGlobalSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModalInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/DeepCopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReverseFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/strategies/BacktrackingStrategy.kt",
        "extension" : "kt",
        "linesOfCode" : 170,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 131,
      "endLine" : 136,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/strategies/BacktrackingStrategy.kt",
        "extension" : "kt",
        "linesOfCode" : 170,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 160,
      "endLine" : 165,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 86
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/SelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/strategies/BacktrackingStrategy.kt",
        "extension" : "kt",
        "linesOfCode" : 170,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 131,
      "endLine" : 136,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/strategies/BacktrackingStrategy.kt",
        "extension" : "kt",
        "linesOfCode" : 170,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 193,
      "endLine" : 198,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 99
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/variables/HighLightVariable.kt",
        "extension" : "kt",
        "linesOfCode" : 17,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/variables/KeyVariable.kt",
        "extension" : "kt",
        "linesOfCode" : 17,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 85,
      "endLine" : 90,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReduceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/InsertFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/GetFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 147,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReduceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReverseFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ExistsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ExternalActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/TextObjectActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 85,
      "endLine" : 90,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/VimShortcutKeyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 292,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 201,
      "startLine" : 298,
      "endLine" : 303,
      "cleanedStartLine" : 152,
      "cleanedEndLine" : 157
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/VimShortcutKeyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 292,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 201,
      "startLine" : 306,
      "endLine" : 311,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/HasKeyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/FlattenFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/RangeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/AbsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ErrTeapotFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 51,
      "endLine" : 56,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 75,
      "endLine" : 80,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 1179,
      "endLine" : 1184,
      "cleanedStartLine" : 642,
      "cleanedEndLine" : 647
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 1328,
      "endLine" : 1333,
      "cleanedStartLine" : 748,
      "cleanedEndLine" : 753
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/CopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/InsertFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 221,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 226,
      "endLine" : 231,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 153
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 1378,
      "endLine" : 1383,
      "cleanedStartLine" : 788,
      "cleanedEndLine" : 793
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeVisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/AutoIndentMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/SelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RepeatCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/commandLineFunctions/GetCmdTypeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/EscapeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 221,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 239,
      "endLine" : 244,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 1391,
      "endLine" : 1396,
      "cleanedStartLine" : 799,
      "cleanedEndLine" : 804
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteMarksCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EchoCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/group/SearchGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 421,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 336,
      "startLine" : 456,
      "endLine" : 461,
      "cleanedStartLine" : 231,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/group/SearchGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 421,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 336,
      "startLine" : 473,
      "endLine" : 478,
      "cleanedStartLine" : 243,
      "cleanedEndLine" : 248
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 221,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 134,
      "endLine" : 139,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1614,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 1292,
      "startLine" : 902,
      "endLine" : 907,
      "cleanedStartLine" : 485,
      "cleanedEndLine" : 490
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReverseFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/GetFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/textFunctions/GetLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/AbsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseUpperMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 141,
      "endLine" : 146,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 55,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ErrTeapotFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/JoinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/EscapeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeFirstNonBlankAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 68,
      "endLine" : 73,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 71,
      "endLine" : 76,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 142,
      "endLine" : 147,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 77
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 99,
      "endLine" : 104,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 71,
      "endLine" : 76,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordForwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/strategies/BacktrackingStrategy.kt",
        "extension" : "kt",
        "linesOfCode" : 170,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 160,
      "endLine" : 165,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/strategies/BacktrackingStrategy.kt",
        "extension" : "kt",
        "linesOfCode" : 170,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 193,
      "endLine" : 198,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 99
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeFirstNonBlankAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 147,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/FloatFunctionHandlerBase.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 19,
      "endLine" : 24,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/FloatFunctionHandlerBase.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexOfFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 221,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 221,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 160,
      "endLine" : 165,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 73,
      "endLine" : 78,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 92,
      "endLine" : 97,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterLineEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/FindFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/variables/KeyVariable.kt",
        "extension" : "kt",
        "linesOfCode" : 17,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/variables/RegisterVariable.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/textFunctions/GetLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 55,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DeleteCommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 204,
      "endLine" : 209,
      "cleanedStartLine" : 104,
      "cleanedEndLine" : 109
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MaxFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ExistsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionUnmatchedAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/ValuesFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/SortUniqFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionPercentOrMatchAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GotoCharacterCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShiftRightCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 51,
      "endLine" : 56,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastMatchCharAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ExternalActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 221,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 177,
      "endLine" : 182,
      "cleanedStartLine" : 108,
      "cleanedEndLine" : 113
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimChangeGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 221,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 206,
      "endLine" : 211,
      "cleanedStartLine" : 132,
      "cleanedEndLine" : 137
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 111,
      "endLine" : 116,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReverseFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/SliceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ForEachFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 76,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReverseFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ForEachFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 76,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/InsertFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 51,
      "endLine" : 56,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DeleteCommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/VisualSelectSearch.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RepeatCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShiftLeftCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/SliceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/AbsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/CountFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ReformatCodeMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeFirstNonBlankAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EchoCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/SplitCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DigraphConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 126,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 85,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModalInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/SelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/CopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ExtendFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 75,
      "endLine" : 80,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimKeyGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 36,
      "endLine" : 42,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimKeyGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/VisualSelectSearch.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/KeysFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/AddFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/GetFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ErrTeapotFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ExistsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseLowerMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 68,
      "endLine" : 73,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CharArgumentConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/TillCharacterMotion.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 55,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCaseToggleCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ForEachFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 76,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/textFunctions/GetLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReduceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/textFunctions/GetLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/ForLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 134,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/statements/loops/WhileLoop.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 22,
      "endLine" : 28,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DeleteCommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/SelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/HasKeyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/textFunctions/GetLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ErrTeapotFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GotoCharacterCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/RepeatCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ExtendFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ActionCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/NormalCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 30,
      "endLine" : 36,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 86,
      "endLine" : 91,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ForEachFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 76,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 151,
      "endLine" : 156,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MaxFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/ClassificationFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 76,
      "endLine" : 81,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ExtendFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/CopyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 10,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReduceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/delete/DeleteEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 68,
      "endLine" : 73,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownLess1FirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GoToLineCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/ShiftLeftCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/InsertFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 64,
      "endLine" : 69,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 70,
      "endLine" : 75,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMisspelledWord.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastGlobalSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 945,
      "startLine" : 625,
      "endLine" : 630,
      "cleanedStartLine" : 345,
      "cleanedEndLine" : 350
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimSearchGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 1106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 945,
      "startLine" : 638,
      "endLine" : 643,
      "cleanedStartLine" : 358,
      "cleanedEndLine" : 363
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchAgainPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/RangeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/SortUniqFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 138,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModalInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CharArgumentConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/IndexedExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 73,
      "endLine" : 78,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/expressions/IndexedExpression.kt",
        "extension" : "kt",
        "linesOfCode" : 100,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 91,
      "endLine" : 96,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ErrTeapotFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/TextObjectActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 85,
      "endLine" : 90,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBeforeCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertDeleteInsertedTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastGlobalSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ProcessExEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 103,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 101,
      "endLine" : 106,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/gn/VisualSelectSearch.kt",
        "extension" : "kt",
        "linesOfCode" : 55,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DeleteLinesCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/GotoCharacterCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionParagraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ForEachFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 76,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RemoveFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 92,
      "endLine" : 97,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleVisualMode.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/register/VimRegisterGroup.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/register/VimRegisterGroupBase.kt",
        "extension" : "kt",
        "linesOfCode" : 434,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 320,
      "startLine" : 289,
      "endLine" : 294,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 51,
      "endLine" : 56,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/EditorResetConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 84,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/cursorFunctions/ColLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 113,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionUpActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/delete/DeleteJoinLinesSpacesAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 64,
      "endLine" : 69,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/common/ExtendedPictographics.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 70,
      "endLine" : 75,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 68,
      "endLine" : 73,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/SelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13VisualAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftLeft.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCharacterAroundCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 69,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineLastEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/EmptyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ExistsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/Float2NrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/GetFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/InsertFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/commentary/CommentaryExtension.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::src" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 193,
      "endLine" : 198,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionWordAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 67,
      "endLine" : 72,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 86,
      "endLine" : 91,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/editor/EditorAccessorImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 165,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 116,
      "startLine" : 59,
      "endLine" : 64,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/editor/caret/CaretTransactionImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 241,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 192,
      "startLine" : 276,
      "endLine" : 281,
      "cleanedStartLine" : 176,
      "cleanedEndLine" : 181
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/VimShortcutKeyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 292,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 201,
      "startLine" : 223,
      "endLine" : 228,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 101
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/ShortcutDispatcher.kt",
        "extension" : "kt",
        "linesOfCode" : 88,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 64,
      "startLine" : 102,
      "endLine" : 107,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/RepeatFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/textFunctions/GetLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownActions.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EchoCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/HistoryCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 77,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionGotoLineFirstAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/services/VariableService.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 125,
      "endLine" : 130,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/services/VariableService.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 143,
      "endLine" : 148,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/ChangeEditorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 83,
      "startLine" : 68,
      "endLine" : 73,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEscapeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/command/MappingProcessor.kt",
        "extension" : "kt",
        "linesOfCode" : 201,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 158,
      "startLine" : 51,
      "endLine" : 56,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ForEachFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 76,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/SliceFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/screen/MotionFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/floatFunctions/Float2NrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/variousFunctions/ExistsFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertNewLineBelowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/DigraphCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/commands/EditFileCommand.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionDownFirstNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetHexAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedDigraphAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/HasKeyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/IndexOfFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/InsertFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/textFunctions/GetLineFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSentenceNextEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionJumpPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 42,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharactersAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/shift/ShiftRight.kt",
        "extension" : "kt",
        "linesOfCode" : 72,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 77,
      "endLine" : 84,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 121,
      "endLine" : 128,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapEndsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionMethodEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/CountFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/MinFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionEndAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionNthCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/PlaybackRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 53,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/EscapeFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/StringFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/matchit/Matchit.kt",
        "extension" : "kt",
        "linesOfCode" : 463,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 358,
      "startLine" : 76,
      "endLine" : 81,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/SpecialKeyHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 109,
      "startLine" : 183,
      "endLine" : 188,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ExtendFunctionHandlers.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ForEachFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 76,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionSectionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAfterCursorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/PutTextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLastSearchReplaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertAtPreviousInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 77,
      "endLine" : 84,
      "cleanedStartLine" : 49,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/LineMatchers.kt",
        "extension" : "kt",
        "linesOfCode" : 109,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 99,
      "endLine" : 106,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/number/ChangeVisualNumberIncAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/VimExtensionFacade.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 92,
      "endLine" : 97,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/extension/VimExtensionFacade.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 104,
      "endLine" : 109,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/object/MotionSentenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/thinapi/TextObjectScopeImpl.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 142,
      "endLine" : 147,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModeInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 67,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 46,
      "endLine" : 51,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/SelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/VerticalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/dictionaryFunctions/HasKeyFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/Char2nrFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/BreakUndoSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 65,
      "endLine" : 70,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 131,
      "endLine" : 136,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 73
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VisualOperatorActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 191,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 60,
      "endLine" : 65,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 144,
      "endLine" : 149,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLinePageStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 34,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/StringFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/stringFunctions/SubmatchFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/HorizontalSplitAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertRegisterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 66,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/GotoDeclarationAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/UndoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/CloseWindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/editor/VimEditorActions.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 90,
      "endLine" : 95,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchEntryActions.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeCharacterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 73,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 45,
      "endLine" : 50,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/copy/YankMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/NextTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectToggleSingleVisualCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/LookupDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertSingleCommandAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 41,
      "endLine" : 46,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/VimActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 55,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/ModalInputConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/StartSelectRegisterConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowNextAction.kt",
        "extension" : "kt",
        "linesOfCode" : 43,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertExitModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionLastNonSpaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetFileInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/OperatorAction.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 75,
      "startLine" : 82,
      "endLine" : 87,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/LeaveCommandLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 62,
      "endLine" : 67,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeInInsertSequenceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 36,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/search/SearchWholeWordBackwardAction.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowUpAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ex/ExEntryAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileSaveCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 33,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnterAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 23,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 66,
      "endLine" : 71,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/collectionFunctions/ReverseFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/vimscript/model/functions/handlers/listFunctions/InsertFunctionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoFileMarkLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/updown/MotionArrowDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/handler/IdeActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 18,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertInsertAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertCompletedLiteralAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSelectPreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineStartAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableBlockModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfWidthRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/mark/MotionGotoMarkAction.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/handler/MotionActionHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 228,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 165,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionBigWordRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 25,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/macro/ToggleRecordingAction.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualSwapSelectionsAction.kt",
        "extension" : "kt",
        "linesOfCode" : 39,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/CommandKeyConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 56,
      "endLine" : 61,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/key/consumers/DeleteCommandCountConsumer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FilePreviousAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 22,
      "endLine" : 27,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollColumnRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/insert/InsertBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 24,
      "endLine" : 29,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowAction.kt",
        "extension" : "kt",
        "linesOfCode" : 61,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 80,
      "endLine" : 85,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/text/MotionCamelLeftAction.kt",
        "extension" : "kt",
        "linesOfCode" : 41,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetAsciiAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollHalfPageDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleCharacterModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/ResetModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileGetLocationInfoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/CtrlUpDownAction.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/visual/VisualToggleLineModeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 49,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/FilterMotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/file/FileCloseAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/change/RepeatChangeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLastScreenColumnAction.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/tabs/PreviousTabAction.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/window/WindowOnlyAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionHomeAction.kt",
        "extension" : "kt",
        "linesOfCode" : 26,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/motion/SelectMotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionArrowRightAction.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/leftright/MotionBackspaceAction.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 26,
      "endLine" : 31,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/RedoAction.kt",
        "extension" : "kt",
        "linesOfCode" : 27,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectDeleteAction.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 39,
      "endLine" : 44,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/fold/FoldActions.kt",
        "extension" : "kt",
        "linesOfCode" : 128,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 106,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollMiddleScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeEndOfLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 28,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 31,
      "endLine" : 36,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/change/change/ChangeRot13MotionAction.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "src/main/java/com/maddyhome/idea/vim/action/RedrawAction.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::src" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/scroll/MotionScrollFirstScreenLineAction.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::vim-engine" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  } ],
  "overallDuplication" : null
}